2017-02-07

Speaker

About me

Alger Yang, M.S , NCCU

  • 角色:
    • 菜鳥資料分析師
    • 資料視覺化愛好者
    • 中華民國替代役訓練班第168T
  • 常用工具:
    • R、SQL、SPSS、…
  • 過去與現在工作:
    • DSP實習研究員
    • 健保資料庫的資料分析
    • 塩洲里活動中心管理員

正片開始

為什麼需要Shiny?

以我為例…


  • 遇上一個難以捉摸的老闆時…
  • 專案進入最後階段的時候…
  • 使一堆數學式、數據、統計量、估計式動起來Q.Q
  • 能作為廣告效益監測、資料品質檢驗等資料科學應用的好工具

什麼是Shiny?

  • Rstudio這間公司在2012年釋出的R套件,時至今日Shiny已經四歲了,許多地方也做了不少更新與改善
  • Shiny是一個用於開發web app的R套件
  • 支援基本的表格、圖片、各種統計圖表、地圖與建模結果的視覺化呈現

Shiny的特色是?

  • Only R
  • 程式撰寫的模式規律(很容易撰寫)
  • 以互動的方式讓使用者更容易的暸解許多複雜的分析結果
  • Shiny可以完全依賴R就能完成一個互動式網頁(or Dashboard),同時也支援 HTML/CSS/Javascript/Markdown etc
  • 支援許多視覺化套件例如:LeafletdygraphsPlotlyHighcharter、Datatable、ggplot2、、…等等
  • 搭配dplyr、tidyr、DT、data.table等資料整理套件合用,會得到意想不到的爽感~

如何執行Shiny apps?

  1. 學習shiny,先從範例模仿
    • 從Rstudio建立shiny apps:
    • step1 Create Project
    • step2 選 Shiny Web Application
    • step3 檔案目錄代表app名稱
  2. 載入已建立好的apps(即目錄名稱)
  3. runApp

開啟shiny專案-Step1

開啟shiny專案-Step2

開啟shiny專案-Step3

安裝與運作原理

安裝與運行

install.packages("shiny") #安裝
library(shiny) #載入
runExample("01_hello")

網頁應用的運作原理

  • 客戶端:
    • 瀏覽器進行畫面呈現
    • 瀏覽器和使用者進行互動
      • 依據互動的過程,瀏覽器隨時會和伺服器交換資料
        • 瀏覽器發出Request
        • 伺服器回傳Response
  • 伺服器端:
    • 伺服器提供畫面的規格給瀏覽器
    • 伺服器再依據瀏覽器提供的資訊,回傳使用者需要的資料

Shiny的運作原理

  • 基本架構
    • ui.R: 客戶端,負責前端使用者介面的呈現
    • server.R: 伺服器端,負責後端資料處理與計算

每個widget都有其在R中對應的function


讓我們稍微看看hello shiny的ui.r

ui.r

說明:

  • shiny 會將 ui.R的R 物件轉換為HTML、CSS和Javascript,透過瀏覽器呈現
  • 透過Javascript,瀏覽器會將使用者的動作轉換為Request發回給Server
  • library(shiny)載入shiny套件
  • shinyUI:它之中的物件都是shiny UI物件
  • fluidPage:整個瀏覽器頁面的容器
  • titlePanel、sidebarPanel和mainPanel

讓我們稍微看看hello shiny的server.r

server.r

說明:

  • Shiny server處理瀏覽器傳來的Request,轉化為R 中的input
  • 我們撰寫R 函數將input轉換為output
  • Shiny server再把output轉換為Response傳回瀏覽器
  • library(shiny)載入Shiny
  • shinyServer:定義伺服器端的邏輯
  • function(input, output) {…}:一段自Request產生Response的邏輯

如何發布Shiny apps?

Shiny編輯的小雜談


  • 刻Shiny的時間成本
    • ui…
    • color…
  • 我的角色
    • 也許我該專注在如何提高模型預測的Accuracy
  • The nice visualization is:
    • 能夠完整表達出資料與分析結果所隱含的資訊
    • 使接收者快速的理解並印象深刻

敬昇:

Shiny套件在R軟體中發展的相當迅速,我認為Shiny在資料科學流程中,已經扮演著舉足輕重的角色,它可以將資料所蘊含的價值透過簡單地方式做呈現,即便是沒有參與資料分析的過程,也可以享有其成果。舉凡:廣告投放成效的監測、資料儀表板的應用、資料品質的檢驗,Shiny都可以作為很好的工具去實現。